#include "Comm.hpp"
#include  "Fifo.hpp"
#include <unistd.h>

int main()
{
    // 获取消息队列的键值
    key_t key=GetKey();
    // 输出消息队列的键值
    cout<<"key:"<<ToHex(key)<<endl;

    // 创建共享内存
    int shmid=CreateShm(key,default_size);
    // 输出共享内存的ID
    cout<<"shmid:"<<shmid<<endl;

    // 连接共享内存
    char *shmaddr=(char*)ShmAttach(shmid);
    // 输出共享内存的地址
    cout<<"shmaddr:"<<ToHex((uint64_t)shmaddr)<<endl;
    
    // 初始化Fifo队列和同步对象
    Fifo fifo(Path);
    Sync syn;
    // 打开同步对象以读取模式
    syn.OpenReadOrDie();

    // 主循环，等待同步信号并处理共享内存中的数据
    while(true)
    {
        // 如果同步等待失败，则退出循环
        if (!syn.Wait())
        {
            break;
        }

        // 输出共享内存中的内容
        cout<<"shm content:"<<shmaddr<<endl;
    } 

    // 删除共享内存
    DeleteShm(shmid);
    return 0;
}